import multiprocessing
import time

# 用代码实践观察主进程是否在子进程执行结束之后再结束
def ximeng(name,count):
    for i in range(1,count + 1):
        print(f"{name}正在看第{i}颗流星")
        time.sleep(0.2)  # 让子进程休眠三秒再结束

def huangxuan(name,count):
    for i in range(1,count + 1):
        print(f"{name}正在陪夕梦看第{i}颗流星")
        time.sleep(0.1)

if __name__ == '__main__':
    p1 = multiprocessing.Process(target = ximeng,args = ('夕梦',10),name = 'ximeng')

    print(f"进程p1的名称是{p1.name}")
    # p1.daemon = True    # 将子进程设置为守护进程，在主进程作为非守护进程结束之后，子进程作为守护进程会随之销毁

    p2 = multiprocessing.Process(target = huangxuan,args = ('黄轩',10),name = 'huangxuan')

    print(f"进程p2的名字是{p2.name}")
    p1.start()
    p2.start()

    # p1.terminate()    # 让子进程自己主动的终止子进程，不建议该行为，因为这样会使得该子进程变为僵尸进程，然后交由python解释器自动回收（底层有init初始化进程来管理维护）

    # time.sleep(1)       # 让主进程休眠一秒就结束
    # print("主进程执行结束")   # 在时间上强行让主进程比子进程提前结束，观察结果后可得知默认情况下主进程会在所有子进程执行结束后结束
    print("希望李黄轩和梦梦白头偕老,常伴君侧！")

